import axios from 'axios'

// 根据环境变量选择导入的库
let showToast: (message: string) => void

if (import.meta.env.VITE_ENV === 'm') {
  // 使用 vant 的 showToast
  import('vant').then((module) => {
    showToast = module.showToast
  })
} else {
  // 使用 element-plus 的 ElMessage
  import('element-plus').then((module) => {
    showToast = module.ElMessage.error
  })
}

const service = axios.create({
  baseURL: import.meta.env.VUE_APP_BASE_API,
  timeout: 300000
})

service.interceptors.request.use(
  (config) => {
    // if (config && config.data) {
    //   config.data.createBy = store.state.user.userInfo.id
    //   config.data.createby = store.state.user.userInfo.id
    //   config.data.updateBy = store.state.user.userInfo.id
    //   config.data.updateby = store.state.user.userInfo.id
    //   // 传参中没有这个属性时才加
    //   if (!('corpId' in config.data)) {
    //     config.data.corpId = store.state.app.corpId
    //   }
    // }
    // if (config && config.params) {
    //   config.params.createBy = store.state.user.userInfo.id
    //   config.params.createby = store.state.user.userInfo.id
    //   config.params.updateBy = store.state.user.userInfo.id
    //   config.params.updateby = store.state.user.userInfo.id
    //   config.params.corpId = store.state.app.corpId
    // }
    // // 注入token
    // config.headers.token = store.getters.token || ''
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

service.interceptors.response.use(
  // 请求成功
  (response) => {
    if (!response.data.returnCode) {
      // 可能是文件流
      return response
    }
    const { returnCode, returnMsg, content, data } = response.data
    // 业务请求成功
    if (returnCode === '00' || returnCode === '0000') {
      // 返回数据
      return content || data
    } else {
      // 业务请求失败，提示定制化信息
      showToast(returnMsg || '请求错误')
      // 返回业务请求失败信息
      return Promise.reject(new Error(returnMsg))
    }
  },
  // 请求失败
  (error) => {
    // 请求不通过，提示状态信息
    showToast(error.returnMsg)
    // 返回请求失败信息
    return Promise.reject(error)
  }
)
export default service
